home *** CD-ROM | disk | FTP | other *** search
Wrap
/* MPTool - First Step : 04/09/97 */ /* Last Modif : 29/10/97 */ /* by HEINRICH Patrick */ /* Nothing but a working version ;) */ /* Frozen : V0.03 */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <dos/dos.h> #define VER "0.03" #define MESS1 " Usage : %s <Option> <Files |Dirs | Volumes>" #define OPT1 " <Option> : t <=> simple time listing\n" #define OPT2 " c <=> time listing + duration/kbps in comment\n\n" #define RET printf("\n") /* def var */ FILE *infp; char *ptr; char path [256]; long filesize=0; long mpduration=0; long mptotsize=0; int filetot=0; int dirtot=0; int mptot=0; int com=0; int count=2; struct FileInfoBlock *fib3_ptr; struct FileLock *File3Lock ; /* end def */ /* def func */ void ExamineIt(char* File2Lock); void IsMPEG(char* gimmefile,long zisize); /* end def */ main(int argc, char *argv[]) { printf("\n%c[1;31m MPTool %c[0mV%s '97 by %c[1;32m·HEINRICH Patrick·%c[0m \n",27,27,VER,27,27); printf("\n Registered to : %c[0;33mEverybody%c[0m \n\n",27,27); if (argc < 3) { printf(MESS1,argv[0]);RET;RET;printf(OPT1);printf(OPT2);exit(0); } switch (*argv[1]) { case 'c':case'C': com=1; case 't':case'T': /* is argv[count] a directory/file/volume */ for ( count=2; (count<=(argc-1)) ;count++ ) { JumpIn: strcpy(path,argv[count]); ptr=path; while ((*ptr!=':') && (*ptr!=0)) {ptr++;} ptr++; if (*ptr!=0) { while (*ptr!=0) {ptr++;} ptr--; if (*ptr!='/') {} else {*ptr=0;} } fib3_ptr = AllocMem( sizeof( struct FileInfoBlock ),0 ); File3Lock = Lock( path, -2 ); if ( File3Lock == NULL ) {printf("\n Can't lock file %s\n",File3Lock);} Examine(File3Lock,fib3_ptr); if ((*fib3_ptr).fib_DirEntryType<0) { filesize=(*fib3_ptr).fib_Size; IsMPEG(argv[count],filesize); UnLock(File3Lock); FreeMem( fib3_ptr, sizeof( struct FileInfoBlock ) ); count++; filetot++; if (count<=argc-1) goto JumpIn; goto EndPart; } UnLock(File3Lock); FreeMem( fib3_ptr, sizeof( struct FileInfoBlock ) ); if (argc==3) { printf("\n============================[MPTool]===['97·TMG·]===============================\n\n"); printf(" MPTool was started from %s\n",path); } printf("\n============================[MPTool]===['97·TMG·]===============================\n\n"); ExamineIt(path); } EndPart: printf("\n============================[MPTool]===['97·TMG·]===============================\n"); if (argc==3) printf("\n %s \n",path); printf("\n %12i Files\n",filetot); printf(" %12i Directories\n",dirtot); printf(" %12i MPEG Files\n",mptot); if (mptotsize/(1024*1024) >= 2) printf("\n %12d Mbs of MPEG\n",mptotsize/(1024*1024)); printf(" %12d Kbs of MPEG\n",mptotsize/1024); printf(" %12d bytes of MPEG\n",mptotsize); printf("\n %02i:%02i:%02i Total Duration\n",(mpduration/3600),((mpduration-3600*(mpduration/3600))/60),mpduration-3600*(mpduration/3600)-60*((mpduration-3600*(mpduration/3600))/60)); printf("\n============================[MPTool]===['97·TMG·]===============================\n\n"); break; default: RET;printf(MESS1,argv[0]);RET;RET;printf(OPT1);printf(OPT2);exit(0); } } void ExamineIt(char* File2Lock) { int count=0; /* check 4 dir */ int fromvol=1; /* check for a lone volume */ long size=0; char newpath [256]; char newpass [256]; char* carptr; struct FileInfoBlock *fib_ptr; struct FileLock *File1Lock ; fib_ptr = AllocMem( sizeof( struct FileInfoBlock ),0 ); strcpy(newpath,File2Lock); carptr=newpath; while (*carptr!=':') {carptr++;} carptr++; if (*carptr!=0) {fromvol=0;} if( fib_ptr == NULL ) { printf("\n Not Enough Memory \n");exit(0); } File1Lock = Lock( File2Lock, -2 ); if ( File1Lock == NULL ) {printf("\n Can't lock file %s\n",File2Lock);} Examine(File1Lock,fib_ptr); while (ExNext(File1Lock,fib_ptr)) { if ( ((*fib_ptr).fib_DirEntryType>0) && (fib_ptr!=NULL) ) { dirtot++; if (count!=0) { if (fromvol==1) { strcpy(newpath,File2Lock); strcat(newpath,(*fib_ptr).fib_FileName); } else { strcpy(newpath,File2Lock);strcat(newpath,"/"); strcat(newpath,(*fib_ptr).fib_FileName); } } else { if (fromvol==1) { strcat(newpath,(*fib_ptr).fib_FileName); } else { strcat(newpath,"/"); strcat(newpath,(*fib_ptr).fib_FileName); } } ExamineIt(newpath); count++; } else { filetot++; size=(*fib_ptr).fib_Size; strcpy(newpass,File2Lock); if (fromvol==1) { IsMPEG(strcat(newpass,(*fib_ptr).fib_FileName),size); } else { strcat(newpass,"/"); IsMPEG(strcat(newpass,(*fib_ptr).fib_FileName),size); } } } UnLock(File1Lock); FreeMem( fib_ptr, sizeof( struct FileInfoBlock ) ); } void IsMPEG(char* gimmefile,long zisize) { FILE *infp; unsigned char inc; char *pointer; int kbps=0; char commy [80]; char temp [10]; long tmpsize; tmpsize=zisize; infp=fopen(gimmefile,"rb"); if (infp==NULL) { printf("\n Can't open file %s\n Check the path & filename\n\n",gimmefile); return; } inc=fgetc(infp); if ( inc!=255 ) { return; } inc=fgetc(infp); if (!( (inc==251) || (inc == 242) || (inc==250) || (inc==252))) { return; } if ((inc==250) || (inc==251)) { inc=fgetc(infp); switch (inc) { case 16: kbps=32;break; case 32: kbps=40;break; case 48: kbps=48;break; case 64: kbps=56;break; case 80: kbps=64;break; case 96: kbps=80;break; case 112: kbps=96;break; case 128: kbps=112;break; case 144: kbps=128;break; case 160: kbps=160;break; case 176: kbps=192;break; case 192: kbps=224;break; case 208: kbps=256;break; case 224: kbps=320;break; default: kbps=128;break; } } else { if (inc==252) { inc=fgetc(infp); switch (inc) { case 16: kbps=32;break; case 32: kbps=48;break; case 48: kbps=56;break; case 64: kbps=64;break; case 80: kbps=80;break; case 96: kbps=96;break; case 112: kbps=112;break; case 128: kbps=128;break; case 144: kbps=168;break; case 160: kbps=192;break; case 176: kbps=224;break; case 192: kbps=256;break; case 208: kbps=320;break; case 224: kbps=384;break; default: return; } } else { if (inc==242) { inc=fgetc(infp); switch (inc) { case 16: kbps=8;break; case 32: kbps=16;break; case 48: kbps=24;break; case 64: kbps=32;break; case 80: kbps=40;break; case 96: kbps=48;break; case 112: kbps=56;break; case 128: kbps=64;break; case 144: kbps=80;break; case 160: kbps=96;break; case 176: kbps=112;break; case 192: kbps=128;break; case 208: kbps=144;break; default:return; } } else {return;} } } mpduration=mpduration+(8*zisize/1000/kbps); printf(" %-65.65s %0.2ld:%0.2ld %3ikbps\n",gimmefile,(8*zisize/1000/kbps/60),(8*zisize/1000/kbps)-(8*zisize/1000/kbps/60)*60,kbps); if (com==1) { if ((8*zisize/1000/kbps/60)<10) {strcpy(commy," [0");} else {strcpy(commy," [");} stci_d(temp,(8*zisize/1000/kbps/60)); strcat(commy,temp); strcat(commy,":"); zisize=((8*zisize/1000/kbps)-(8*zisize/1000/kbps/60)*60); if ( zisize <10 ) {strcat(commy,"0");} stci_d(temp,zisize); strcat(commy,temp); strcat(commy,"] - ["); stci_d(temp,kbps); strcat(commy,temp); strcat(commy,"kbps]"); SetComment(gimmefile , commy); } mptot++; mptotsize=mptotsize+tmpsize; }